//#define _CRT_SECURE_NO_WARNINGS 1
//#include<iostream>
//#include<algorithm>
//#include<vector>
//using namespace std;
//
//bool check(vector<int>& v, int mid,int M)
//{
//	int move = 0;
//	int prev = 0;
//	for (size_t i= 1; i < v.size(); i++) {
//		if (v[i] - v[prev] < mid)
//		{
//			move++;
//		}
//		else
//		{
//			prev = i;
//		}
//	}
//	return move <= M;
//}
//int main()
//{
//	int L, N, M;
//	cin >> L >> N >> M;
//	vector<int> rocks;
//	rocks.push_back(0);
//	for (size_t i = 0; i < N; i++)
//	{
//		int n;
//		cin >> n;
//		rocks.push_back(n);
//	}
//	rocks.push_back(L);
//
//	sort(rocks.begin(), rocks.end());
//
//	int left = 0, right = L;
//	int ret = 0;
//	while (left <= right)
//	{
//		int mid = left + (right - left) / 2;
//		if (check(rocks, mid,M))
//		{
//			ret = mid;
//			left = mid + 1 ;
//		}
//		else
//		{
//			right = mid - 1;
//		}
//	}
//	cout << ret<< endl;
//
//	return 0;
//}